package proxy_pattern.virtual;

import static java.lang.Thread.sleep;

/**
 * @author 申书航
 * @version 1.0
 * 虚拟图标类，用于延迟加载真实图标
 */
public class ImageProxy implements Icon{

    private ImageIcon icon; // 存储实际的图标对象

    @Override
    public int getWidth() {
        // 获取图标的宽度
        if (icon != null) {
            return icon.getWidth();
        }
        return 1;
    }

    @Override
    public int getHeight() {
        // 获取图标的高度
        if (icon != null) {
            return icon.getHeight();
        }
        return 1;
    }

    @Override
    public void paintIcon(Container container) {
        // 绘制图标，如果图标未加载则显示默认图标
        if (icon != null) {
            icon.paintIcon(container);
        }
        container.showContent(getWidth(), getHeight(), "默认图标");
        Thread t = new Thread(new Runnable() {

            @Override
            public void run() {
                // 延迟加载真实图标
                icon = new ImageIcon();
                try {
                    sleep(3000); // 暂停3秒模拟加载时间
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                icon.paintIcon(container); // 加载完成后绘制实际图标
            }
        });
        t.start(); // 启动新线程进行图标加载
    }
}
